#include <stdio.h>
#include <string.h>
#include <assert.h>
// strcmp 
// 第一个字符串大于第二个字符串，返回大于零的数字，比如 1 ，或 16
// 第一个字符串等于第二个字符串，返回等于零的数字   0
// 第一个字符串小于第二个字符串，返回小于零的数字， 比如 -1 或-16

int my_strncmp(char *p1, char *p2, int num){
    assert(p1 && p2);
    int count = 1; // 这里待优化
    while(*p1 == *p2) {
        if(count == num || *p1 == '\0'){    //如果当前字符相等，并且为\0,则认为相等
            return 0; 
        }
        p1 ++ ;
        p2 ++ ;
        count ++;
    }
    if (*p1 > *p2)
    {   
        return 1;
    }else {
        return -1;
    }
    // return (*p1 - *p2); // 这里会返回 104， 不靠谱
}
int main() 
{
    char arr[] = "zrhhello";
    char arrEx[] = "zrh";
    int ret = strcmp(arr,arrEx);
    printf("%d \n", ret);  // 输出 -1 ，
    int a = strncmp(arr,arrEx,3); // 比较前三个字符，
    printf("a = %d \n", a); // 输出0

    int b = my_strncmp(arr,arrEx,4);
    printf("b = %d \n", b);
    return 0; // 返回 0
}
